import { run_test } from '../test-harness';

run_test([
  'abs(a+i*b)',
  '(a^2+b^2)^(1/2)',

  'abs(a+b+i*c)',
  '(2*a*b+a^2+b^2+c^2)^(1/2)',

  'abs(exp(a+i*b))',
  'exp(a)',

  'abs(((-1)^(1/3)+1)^(1/2))',
  '3^(1/4)',

  'abs((-2*(-1)^(1/6)/(3^(1/2)))^(1/4))',
  '(2/(3^(1/2)))^(1/4)',

  'abs((-2*(-1)^(1/6)/(3^(1/2))+1)^(1/4))',
  '1/3^(1/8)',

  'abs((2*(-1)^(5/6)/(3^(1/2)))^(1/4))',
  '(2/(3^(1/2)))^(1/4)',

  'abs(1+1.0*(-1)^(1/2))',
  '1.414214...',

  'abs(1-1.0*(-1)^(1/2))',
  '1.414214...',

  'abs(1+2.0*(-1)^(1/2))',
  '2.236068...',

  'abs(1-2.0*(-1)^(1/2))',
  '2.236068...',

  'abs(1)',
  '1',

  'abs(x)',
  'abs(x)',

  // true only if x is real,
  // counterexample: i, which makes 1 and -1
  'abs(x)^2',
  'x^2',

  'abs(-x)',
  'abs(x)',

  'abs(abs(-x))',
  'abs(x)',

  'abs(abs(abs(-x)))',
  'abs(x)',

  'abs(a+b)',
  'abs(a+b)',

  'abs(a*b)',
  'abs(a)*abs(b)',

  'abs(-1)',
  '1',

  'abs(1+exp(i*pi/3))',
  '3^(1/2)',

  'abs((a+i*b)/(c+i*d))',
  '(a^2+b^2)^(1/2)/((c^2+d^2)^(1/2))',

  'abs(((-1)^(1/2) / (3^(1/2)))^(1/2))',
  '1/3^(1/4)',

  'abs(exp(i theta))',
  '1',

  'abs(exp(-i theta))',
  '1',

  'abs((-1)^theta)',
  '1',

  'abs((-1)^(-theta))',
  '1',

  'abs(3*(-1)^theta)',
  '3',

  'abs(3*(-1)^(-theta))',
  '3',

  'abs(-3*(-1)^theta)',
  '3',

  'abs(-3*(-1)^(-theta))',
  '3',

  'abs(-5 i pi / a)',
  '5*pi/abs(a)',

  'abs(1 / a)',
  '1/(abs(a))',

  // ---------- old abs tests

  'abs(2)',
  '2',

  'abs(2.0)',
  '2.0',

  'abs(-2)',
  '2',

  'abs(-2.0)',
  '2.0',

  'abs(a)',
  'abs(a)',

  'abs(-a)',
  'abs(a)',

  'abs(2*a)',
  '2*abs(a)',

  'abs(-2*a)',
  '2*abs(a)',

  'abs(2.0*a)',
  '2.0*abs(a)',

  'abs(-2.0*a)',
  '2.0*abs(a)',

  'abs(a-b)+abs(b-a)',
  '2*abs(a-b)',

  'abs(3 + 4 i)',
  '5',

  'abs([2,3,4])',
  '29^(1/2)',

  'abs(a*b)',
  'abs(a)*abs(b)',

  'abs(a/b)',
  'abs(a)/abs(b)',

  'abs(1/a^b)',
  '1/(abs(a^b))',

  // Check that vector length is simplified

  'P=[u*cos(v),u*sin(v),v]',
  '',

  'abs(cross(d(P,u),d(P,v)))',
  '(1+u^2)^(1/2)',

  'abs((-1)^(-0.666667+0.0291367/pi))',
  '1.0',

  'abs((-1)^(9/3))',
  '1',

  'abs((1)^(9/3))',
  '1',

  'abs((-1.0)^(9/3))',
  '1.0',
]);
